<?php
// +----------------------------------------------------------------------
// | ThinkPHP
// +----------------------------------------------------------------------
// | Copyright (c) 2008 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $Id$

/**
 +----------------------------------------------------------
 * 模板检查
 +----------------------------------------------------------
 * @return void
 +----------------------------------------------------------
 * @throws ThinkExecption
 +----------------------------------------------------------
 */
function checkTemplate()
{
    if(C('TMPL_SWITCH_ON')) {
        // 启用多模版切换
        $t = C('VAR_TEMPLATE');
        if ( isset($_GET[$t]) ) {
            $templateSet = $_GET[$t];
            Cookie::set('template',$templateSet,time()+360000);
        } else {
            if(Cookie::is_set('template')) {
                $templateSet = Cookie::get('template');
            }else {
                $templateSet =    C('DEFAULT_TEMPLATE');
                Cookie::set('template',$templateSet,time()+360000);
            }
        }
        if (!is_dir(TMPL_PATH.$templateSet)) {
            //模版不存在的话，使用默认模版
            $templateSet =    C('DEFAULT_TEMPLATE');
        }
        //模版名称
        define('TEMPLATE_NAME',$templateSet);
        // 当前模版路径
        define('TEMPLATE_PATH',TMPL_PATH.TEMPLATE_NAME);
        $tmplDir	=	TMPL_DIR.'/'.TEMPLATE_NAME.'/';
    }else{
        // 把模版目录直接放置项目模版文件
        // 该模式下面没有TEMPLATE_NAME常量
        define('TEMPLATE_PATH',TMPL_PATH);
        $tmplDir	=	TMPL_DIR.'/';
    }
    // 获取URL显示的模块和操作名
    $module	=	defined('P_MODULE_NAME')?P_MODULE_NAME:MODULE_NAME;
    $action		=	defined('P_ACTION_NAME')?P_ACTION_NAME:ACTION_NAME;

    //当前网站地址
    define('__ROOT__',WEB_URL);
    //当前项目地址
    define('__APP__',PHP_FILE);
    //当前页面地址
    define('__SELF__',$_SERVER['PHP_SELF']);
    // 应用URL根目录
    if(C('APP_DOMAIN_DEPLOY')) {
        // 独立域名部署需要指定模板从根目录开始
        $appRoot   =  '/';
    }else{
        $appRoot   =  WEB_URL.'/'.APP_NAME.'/';
    }
    if(defined('C_MODULE_NAME')) {
        // 使用了组件模块
        // 当前模块地址
        define('__URL__',PHP_FILE.'/'.C_MODULE_NAME);
        //当前操作地址
        define('__ACTION__',__URL__.'/'.$action);
        // 默认模板文件名
        C('TMPL_FILE_NAME',LIB_PATH.COMPONENT_NAME.'/'.TMPL_DIR.'/'.TEMPLATE_NAME.'/'.MODULE_NAME.'/'.ACTION_NAME.C('TEMPLATE_SUFFIX'));
        //项目模板目录
        define('APP_TMPL_URL', $appRoot.LIB_DIR.'/'.COMPONENT_NAME.'/'.TMPL_DIR.'/'.TEMPLATE_NAME.'/');
        define('__CURRENT__', WEB_URL.'/'.APP_NAME.'/'.LIB_DIR.'/'.$tmplDir.str_replace(C('COMPONENT_DEPR'),'/',C_MODULE_NAME));
    }else{
        // 当前模块地址
        define('__URL__',PHP_FILE.'/'.$module);
        //当前操作地址
        define('__ACTION__',__URL__.'/'.$action);
        C('TMPL_FILE_NAME',TEMPLATE_PATH.'/'.MODULE_NAME.'/'.ACTION_NAME.C('TEMPLATE_SUFFIX'));
        define('__CURRENT__', WEB_URL.'/'.APP_NAME.'/'.LIB_DIR.'/'.$tmplDir.MODULE_NAME);
        //项目模板目录
        define('APP_TMPL_URL', $appRoot.LIB_DIR.'/'.$tmplDir);
    }
    //项目公共文件目录
    define('APP_PUBLIC_URL', APP_TMPL_URL.'Public');
    //网站公共文件地址
    define('WEB_PUBLIC_URL', WEB_URL.'/Public');
    return ;
}
Tag::add('app_run','checkTemplate');
?>